/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AccesoWS;

import DTOs.DTOTeatros;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

/**
 *
 * @author Julian
 */
public class WSTeatro {

    static public boolean loginteatro(String admin, String pass) throws Exception {

        try { // Call Web Service Operation
            teatro.TeatroWebServiceService service = new teatro.TeatroWebServiceService();
            teatro.TeatroWebService port = service.getTeatroWebServicePort();
            // TODO initialize WS operation arguments here
            teatro.Administrador administrador = new teatro.Administrador();
            administrador.setUsuario(admin);
            administrador.setContrasena(pass);
            // TODO process result here
            boolean result = port.login(administrador);
            System.out.println("Result = " + result);
            return result;
        } catch (Exception ex) {
            throw ex;
        }

    }

    static public Long agregarclienteteatro(String name, String mail, String city, String country, String phone) throws Exception {

        try { // Call Web Service Operation
            teatro.TeatroWebServiceService service = new teatro.TeatroWebServiceService();
            teatro.TeatroWebService port = service.getTeatroWebServicePort();
            // TODO initialize WS operation arguments here
            teatro.Cliente cliente = new teatro.Cliente();
            // TODO process result here

            cliente.setNombre(name);
            cliente.setEmail(mail);
            cliente.setCiudad(city);
            cliente.setPais(country);
            cliente.setTelefono(phone);
            java.lang.Long result = port.agregarCliente(cliente);
            System.out.println("Result = " + result);
            return result;
        } catch (Exception ex) {
            // TODO handle custom exceptions here
            throw ex;
        }

    }

    static public List<teatro.Presentacion> getpresentacionbyfecha(int year, int month, int day) throws Exception {



        try { // Call Web Service Operation
            teatro.TeatroWebServiceService service = new teatro.TeatroWebServiceService();
            teatro.TeatroWebService port = service.getTeatroWebServicePort();
            // TODO initialize WS operation arguments here
            DatatypeFactory factory = DatatypeFactory.newInstance();
            XMLGregorianCalendar fecha = factory.newXMLGregorianCalendar();
            fecha.setDay(day);
            fecha.setMonth(month);
            fecha.setYear(year);
            fecha.setHour(0);
            fecha.setMinute(0);
            fecha.setSecond(0);
            // TODO process result here
            java.util.List<teatro.Presentacion> result = port.buscarPresentacionPorFecha(fecha);
            System.out.println("Result = " + result);
            return result;
        } catch (Exception ex) {
            // TODO handle custom exceptions here
            throw ex;
        }

    }

    static public Long reservar(String cedula, Long idpresent, int idlocalidad) throws Exception {


        try { // Call Web Service Operation
            teatro.TeatroWebServiceService service = new teatro.TeatroWebServiceService();
            teatro.TeatroWebService port = service.getTeatroWebServicePort();
            // TODO initialize WS operation arguments here
            java.lang.Long idCliente = Long.valueOf(cedula);
            java.lang.Long idPresentacion = Long.valueOf(idpresent);
            int localidad = idlocalidad;
            // TODO process result here
            java.lang.Long result = port.nuevaReserva(idCliente, idPresentacion, localidad);
            System.out.println("Result = " + result);
            return result;
        } catch (Exception ex) {
            // TODO handle custom exceptions here
            throw ex;
        }

    }

    static public ArrayList<DTOTeatros> toDTO(List<teatro.Presentacion> presentacion) {
        ArrayList<DTOTeatros> list = new ArrayList<DTOTeatros>();
        DTOTeatros dto = new DTOTeatros();
        for (int i = 0; i < presentacion.size(); i++) {
            dto.setNombre(presentacion.get(i).getNombre());
            dto.setId(presentacion.get(i).getId().intValue());
            dto.setHora(presentacion.get(i).getHora());
            Date fecha = new Date(presentacion.get(i).getFecha().getYear() - 1900, presentacion.get(i).getFecha().getMonth() - 1, presentacion.get(i).getFecha().getDay());
            dto.setFecha(fecha);
            dto.setEstado(presentacion.get(i).getEstado());
            dto.setDuracion(presentacion.get(i).getDuracion());
            dto.setCuposdisponibles3(presentacion.get(i).getCuposLibresLocalidad3());
            dto.setCuposdisponibles2(presentacion.get(i).getCuposLibresLocalidad2());
            dto.setCuposdisponibles1(presentacion.get(i).getCuposLibresLocalidad1());
            dto.setCupos3(presentacion.get(i).getCuposLocalidad3());
            dto.setCupos2(presentacion.get(i).getCuposLocalidad2());
            dto.setCupos1(presentacion.get(i).getCuposLocalidad1());
            dto.setCosto3(presentacion.get(i).getPreciosLocalidad3());
            dto.setCosto2(presentacion.get(i).getPreciosLocalidad2());
            dto.setCosto1(presentacion.get(i).getPreciosLocalidad1());
            list.add(dto);
        }
        System.out.println(presentacion.get(0).getId());
        System.out.println("list"+list);


        return list;
    }

    static public DTOTeatros toDTO(teatro.Presentacion presentacion) {

        DTOTeatros dto = new DTOTeatros();

            dto.setNombre(presentacion.getNombre());
            dto.setId(presentacion.getId().intValue());
            dto.setHora(presentacion.getHora());
            Date fecha = new Date(presentacion.getFecha().getYear() - 1900, presentacion.getFecha().getMonth() - 1, presentacion.getFecha().getDay());
            dto.setFecha(fecha);
            dto.setEstado(presentacion.getEstado());
            dto.setDuracion(presentacion.getDuracion());
            dto.setCuposdisponibles3(presentacion.getCuposLibresLocalidad3());
            dto.setCuposdisponibles2(presentacion.getCuposLibresLocalidad2());
            dto.setCuposdisponibles1(presentacion.getCuposLibresLocalidad1());
            dto.setCupos3(presentacion.getCuposLocalidad3());
            dto.setCupos2(presentacion.getCuposLocalidad2());
            dto.setCupos1(presentacion.getCuposLocalidad1());
            dto.setCosto3(presentacion.getPreciosLocalidad3());
            dto.setCosto2(presentacion.getPreciosLocalidad2());
            dto.setCosto1(presentacion.getPreciosLocalidad1());

        return dto;
    }

    static public ArrayList<DTOTeatros> getpresentacion(int year, int month, int day) throws Exception {
        return toDTO(getpresentacionbyfecha(year, month, day));
    }

    static public String stringTeatro(Long idp) throws Exception{

        try { // Call Web Service Operation
            teatro.TeatroWebServiceService service = new teatro.TeatroWebServiceService();
            teatro.TeatroWebService port = service.getTeatroWebServicePort();
            // TODO initialize WS operation arguments here
            long id = idp;
            // TODO process result here
            teatro.Reserva result = port.buscarReservaPorId(id);
            System.out.println("Result = "+result);
            String r = "<br> Presentacion:"+result.getPresentacion().getNombre()+"<br> Duracion:"+result.getPresentacion().getDuracion()+
                    "<br>Fecha"+result.getFechaReserva().getYear()+"-"+result.getFechaReserva().getMonth()+"-"+result.getFechaReserva().getDay()+
                    "<br> Hora"+result.getPresentacion().getHora();

            return r;
        } catch (Exception ex) {
            throw ex;
        }

    }

    public static teatro.Cliente buscarCientePorNombreUsr(String username) throws Exception{
        try { // Call Web Service Operation
            teatro.TeatroWebServiceService service = new teatro.TeatroWebServiceService();
            teatro.TeatroWebService port = service.getTeatroWebServicePort();
            // TODO initialize WS operation arguments here
            //java.lang.String nombre = "";
            // TODO process result here
            java.util.List<teatro.Cliente> resulta = port.buscarClientePorNombre(username);
            teatro.Cliente result = resulta.get(0);
            System.out.println("Result = "+result);
            return result;
        } catch (Exception ex) {
            throw ex;
            // TODO handle custom exceptions here
        }
    }

}
